package cn.edu.zafu.bigdata.Wym;

import java.io.*;
import java.net.*;

public class Wym_TCPChatServer {
    private ServerSocket serverSocket;

    // 构造方法，初始化服务端Socket并指定监听端口
    public Wym_TCPChatServer(int port) throws IOException {
        serverSocket = new ServerSocket(port);
        System.out.println("服务器启动，等待连接...");
    }

    // 启动服务端，等待客户端连接
    public void start() {
        new Thread(this::handleConnection).start();
    }

    // 处理客户端连接的方法
    private void handleConnection() {
        try {
            // 等待客户端连接
            Socket clientSocket = serverSocket.accept();
            System.out.println("客户端已连接：" + clientSocket.getInetAddress().getHostAddress());

            // 获取输出流，用于发送消息到客户端
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            // 获取输入流，用于接收客户端发送的消息
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            // 获取标准输入流，用于读取服务端用户的输入
            BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

            // 启动一个新线程，用于读取服务端用户的输入并发送到客户端
            new Thread(() -> {
                try {
                    String inputLine;
                    System.out.println("服务端请输入：");
                    // 循环读取服务端用户的输入
                    while ((inputLine = stdin.readLine()) != null) {
                        // 发送消息到客户端
                        out.println("服务端：" + inputLine);
                        System.out.println("服务端请输入：");
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }).start();

            // 循环读取客户端发送的消息
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                // 打印接收到的客户端消息
                System.out.println("接收到客户端消息：" + inputLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 主方法，启动服务端
    public static void main(String[] args) throws IOException {
        int port = 12345;
        new Wym_TCPChatServer(port).start();
    }
}


